#ifndef __LIST_H
#define __LIST_H

typedef float NUMTYPE;

typedef struct ListNodeStruct ListNode;

struct ListNodeStruct {
	ListNode* next;
	NUMTYPE value;
};

typedef struct ListStruct List;

struct ListStruct {
	ListNode* first;
	int size;
};

List* createList();

// insercion al principio de la lista
void prependToList(List* list, NUMTYPE value);

// insercion ordenada en la lista
void insertToList(List* list, NUMTYPE value);

// busqueda de nodo de la lista por indice, devuelve NULL si no existe
ListNode* seekNode(List* list, int index);

// cantidad de nodos, elementos de la lista
int nodeCount(List* list);

// muestra el contenido de la lista por pantalla
void printList(List* list);

// elimina la lista y todos sus nodos
void destroyList(List* list);

#endif
